package com.hbase;

import com.until.HBUtils;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;

/**
 * @Author：YuanHaHa
 * @Date：2024/7/5 22:08
 */
public class GetRowData {
    public static void main(String[] args) throws IOException {
        // 获取 Hbase 连接对象
        Connection connection = HBUtils.getConnection();
        // 获取 表对象
        Table table = connection.getTable(TableName.valueOf("Person"));

        // 构建 Get 对象 封装要获取的行的信息
        Get get = new Get(Bytes.toBytes("1006"));
        // 设置 指定的列族 和 列名
        //get.addColumn(Bytes.toBytes("info01"), Bytes.toBytes("name"));
        Result result = table.get(get);
        Cell[] cells = result.rawCells();

        // 遍历数据
        // 从单元格数组中遍历得到数据
        for (Cell cell : cells) {
            // 一般使用 CellUtils 获取数据
            // 获取 rowKey
            String rowKey = Bytes.toString(CellUtil.cloneRow(cell));
            // 获取 列族
            String cf = Bytes.toString(CellUtil.cloneFamily(cell));
            // 获取 列名
            String cn = Bytes.toString(CellUtil.cloneQualifier(cell));
            // 获取 对应列的值
            String value = Bytes.toString(CellUtil.cloneValue(cell));
            System.out.println(
                    "[" +  rowKey + "," + cf + "," + cn + "," + value + "]"
            );
        }

        table.close();
        // 释放链接
        HBUtils.release( connection,null);
    }
}
